package com.heima.Work;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

/*
定义一个标准的JavaBean，名叫Person，包含属性name、age。

使用反射的方式创建一个实例、调用构造函数初始化name、age，使用反射方式调用setName方法对名称进行设置，

不使用setAge方法直接使用反射方式对age赋值。

 */
public class Work1 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchFieldException {
        //创建class对象
        Class clazz = Class.forName("com.heima.Work.Person");
        //获得Constructor并创建人类对象
        Constructor constructor = clazz.getConstructor();
        Person person = (Person) constructor.newInstance();
        Field name = clazz.getDeclaredField("name");
        name.setAccessible(true);
        name.set(person,"zhangsan");
        Field age = clazz.getDeclaredField("age");
        age.setAccessible(true);
        age.set(person,25);
        System.out.println(person);
    }
}
